<html>
<head>
	<title>Serialization benchmark results</title>
	<link href='default.css' rel='stylesheet' type='text/css' />
</head>
<body>

<h2>Serialization results of <span>Northwind database serializtion perf</span> run at 05/02/2010</h2>
<span class="summary">These benchmarks show the total time in ticks (1/1000ms) that it takes each serializer to serialize and deserialize each entire table from the  <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Northwind.Common/DataModel/NorthwindData.cs'>Northwind Database</a> (3202 records) 1 Times. <br/><br/>The full source code of the benchmarks (which generated this report) is <a href='http://code.google.com/p/servicestack/source/browse/trunk/Common/Northwind.Benchmarks/Nortwind.Benchmarks.Console/Program.cs'>available here</a>.</span><div id='combined'>
<h3>Combined results of all benchmarks below</h3>
<table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr><th class='c1'>Microsoft DataContractSerializer</th><td>823758</td><th>4.63x</th><td>43268</td><td>138252</td><td>181520</td><td>181520</td><th>6.97x</th></tr><tr><th class='c1'>Microsoft JsonDataContractSerializer</th><td>527648</td><th>2.96x</th><td>68275</td><td>278855</td><td>347130</td><td>347130</td><th>13.34x</th></tr><tr><th class='c1'>Microsoft JavaScriptSerializer</th><td>552293</td><th>3.10x</th><td>363590</td><td>4271196</td><td>4634786</td><td>4634786</td><th>178.05x</th></tr><tr><th class='c1'>Microsoft BinaryFormatter</th><td>206201</td><th>1.16x</th><td>105892</td><td>55979</td><td>161871</td><td>161871</td><th>6.22x</th></tr><tr><th class='c1'>NewtonSoft.Json</th><td>568812</td><th>3.19x</th><td>81339</td><td>195386</td><td>276725</td><td>276725</td><th>10.63x</th></tr><tr><th class='c1'>ProtoBuf.net</th><td>178093</td><th>1x</th><td>16478</td><td>9553</td><td>26031</td><td>26031</td><th>1x</th></tr><tr><th class='c1'>ServiceStack TypeSerializer</th><td>432649</td><th>2.43x</th><td>43413</td><td>39161</td><td>82574</td><td>82574</td><th>3.17x</th></tr><tr><th class='c1'>Platform TextSerializer</th><td>429467</td><th>2.41x</th><td>24264</td><td>78999</td><td>103263</td><td>103263</td><th>3.97x</th></tr>
</tbody>
</table>
</div>
<h3>Results of serializing and deserializing CategoryDto 1 times</h3>
<table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr><th class='c1'>Microsoft DataContractSerializer</th><td>1232</td><th>3.23x</th><td>432</td><td>346</td><td>778</td><td>778</td><th>5.40x</th></tr><tr><th class='c1'>Microsoft JsonDataContractSerializer</th><td>672</td><th>1.76x</th><td>113</td><td>273</td><td>386</td><td>386</td><th>2.68x</th></tr><tr><th class='c1'>Microsoft JavaScriptSerializer</th><td>790</td><th>2.07x</th><td>401</td><td>1017</td><td>1418</td><td>1418</td><th>9.85x</th></tr><tr><th class='c1'>Microsoft BinaryFormatter</th><td>1127</td><th>2.96x</th><td>279</td><td>236</td><td>515</td><td>515</td><th>3.58x</th></tr><tr><th class='c1'>NewtonSoft.Json</th><td>790</td><th>2.07x</th><td>139</td><td>317</td><td>456</td><td>456</td><th>3.17x</th></tr><tr><th class='c1'>ProtoBuf.net</th><td>381</td><th>1x</th><td>61</td><td>83</td><td>144</td><td>144</td><th>1x</th></tr><tr><th class='c1'>ServiceStack TypeSerializer</th><td>598</td><th>1.57x</th><td>76</td><td>84</td><td>160</td><td>160</td><th>1.11x</th></tr><tr><th class='c1'>Platform TextSerializer</th><td>622</td><th>1.63x</th><td>68</td><td>191</td><td>259</td><td>259</td><th>1.80x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CategoryDto 1 times</h3>
<table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr><th class='c1'>Microsoft DataContractSerializer</th><td>32721</td><th>2.62x</th><td>1362</td><td>5626</td><td>6988</td><td>6988</td><th>4.50x</th></tr><tr><th class='c1'>Microsoft JsonDataContractSerializer</th><td>23869</td><th>1.91x</th><td>1555</td><td>8686</td><td>10241</td><td>10241</td><th>6.59x</th></tr><tr><th class='c1'>Microsoft JavaScriptSerializer</th><td>25264</td><th>2.02x</th><td>10686</td><td>21945</td><td>32631</td><td>32631</td><th>21.00x</th></tr><tr><th class='c1'>Microsoft BinaryFormatter</th><td>16132</td><th>1.29x</th><td>3506</td><td>2844</td><td>6350</td><td>6350</td><th>4.09x</th></tr><tr><th class='c1'>NewtonSoft.Json</th><td>25229</td><th>2.02x</th><td>2072</td><td>4276</td><td>6348</td><td>6348</td><th>4.08x</th></tr><tr><th class='c1'>ProtoBuf.net</th><td>12492</td><th>1x</th><td>734</td><td>820</td><td>1554</td><td>1554</td><th>1x</th></tr><tr><th class='c1'>ServiceStack TypeSerializer</th><td>19140</td><th>1.53x</th><td>1085</td><td>1102</td><td>2187</td><td>2187</td><th>1.41x</th></tr><tr><th class='c1'>Platform TextSerializer</th><td>20928</td><th>1.68x</th><td>1014</td><td>2432</td><td>3446</td><td>3446</td><th>2.22x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CategoryDto 1 times</h3>
<table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr><th class='c1'>Microsoft DataContractSerializer</th><td>7437</td><th>1.89x</th><td>338</td><td>899</td><td>1237</td><td>1237</td><th>3.52x</th></tr><tr><th class='c1'>Microsoft JsonDataContractSerializer</th><td>6160</td><th>1.57x</th><td>749</td><td>1726</td><td>2475</td><td>2475</td><th>7.05x</th></tr><tr><th class='c1'>Microsoft JavaScriptSerializer</th><td>6211</td><th>1.58x</th><td>1883</td><td>8339</td><td>10222</td><td>10222</td><th>29.12x</th></tr><tr><th class='c1'>Microsoft BinaryFormatter</th><td>5247</td><th>1.34x</th><td>990</td><td>534</td><td>1524</td><td>1524</td><th>4.34x</th></tr><tr><th class='c1'>NewtonSoft.Json</th><td>6241</td><th>1.59x</th><td>516</td><td>1249</td><td>1765</td><td>1765</td><th>5.03x</th></tr><tr><th class='c1'>ProtoBuf.net</th><td>3930</td><th>1x</th><td>169</td><td>182</td><td>351</td><td>351</td><th>1x</th></tr><tr><th class='c1'>ServiceStack TypeSerializer</th><td>5187</td><th>1.32x</th><td>378</td><td>345</td><td>723</td><td>723</td><th>2.06x</th></tr><tr><th class='c1'>Platform TextSerializer</th><td>5709</td><th>1.45x</th><td>247</td><td>670</td><td>917</td><td>917</td><th>2.61x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CategoryDto 1 times</h3>
<table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr><th class='c1'>Microsoft DataContractSerializer</th><td>5236</td><th>5.34x</th><td>226</td><td>685</td><td>911</td><td>911</td><th>5.69x</th></tr><tr><th class='c1'>Microsoft JsonDataContractSerializer</th><td>1912</td><th>1.95x</th><td>295</td><td>1054</td><td>1349</td><td>1349</td><th>8.43x</th></tr><tr><th class='c1'>Microsoft JavaScriptSerializer</th><td>2647</td><th>2.70x</th><td>1916</td><td>2858</td><td>4774</td><td>4774</td><th>29.84x</th></tr><tr><th class='c1'>Microsoft BinaryFormatter</th><td>1969</td><th>2.01x</th><td>631</td><td>543</td><td>1174</td><td>1174</td><th>7.34x</th></tr><tr><th class='c1'>NewtonSoft.Json</th><td>2647</td><th>2.70x</th><td>492</td><td>857</td><td>1349</td><td>1349</td><th>8.43x</th></tr><tr><th class='c1'>ProtoBuf.net</th><td>980</td><th>1x</th><td>160</td><td>0</td><td>160</td><td>160</td><th>1x</th></tr><tr><th class='c1'>ServiceStack TypeSerializer</th><td>2157</td><th>2.20x</th><td>181</td><td>206</td><td>387</td><td>387</td><th>2.42x</th></tr><tr><th class='c1'>Platform TextSerializer</th><td>1716</td><th>1.75x</th><td>133</td><td>335</td><td>468</td><td>468</td><th>2.92x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CategoryDto 1 times</h3>
<table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr><th class='c1'>Microsoft DataContractSerializer</th><td>331678</td><th>5.50x</th><td>16927</td><td>60615</td><td>77542</td><td>77542</td><th>9.99x</th></tr><tr><th class='c1'>Microsoft JsonDataContractSerializer</th><td>165567</td><th>2.75x</th><td>22273</td><td>110768</td><td>133041</td><td>133041</td><th>17.14x</th></tr><tr><th class='c1'>Microsoft JavaScriptSerializer</th><td>199864</td><th>3.32x</th><td>163317</td><td>391300</td><td>554617</td><td>554617</td><th>71.46x</th></tr><tr><th class='c1'>Microsoft BinaryFormatter</th><td>78378</td><th>1.30x</th><td>38409</td><td>26372</td><td>64781</td><td>64781</td><th>8.35x</th></tr><tr><th class='c1'>NewtonSoft.Json</th><td>204384</td><th>3.39x</th><td>38107</td><td>80761</td><td>118868</td><td>118868</td><th>15.32x</th></tr><tr><th class='c1'>ProtoBuf.net</th><td>60253</td><th>1x</th><td>7761</td><td>0</td><td>7761</td><td>7761</td><th>1x</th></tr><tr><th class='c1'>ServiceStack TypeSerializer</th><td>169694</td><th>2.82x</th><td>20027</td><td>18184</td><td>38211</td><td>38211</td><th>4.92x</th></tr><tr><th class='c1'>Platform TextSerializer</th><td>127182</td><th>2.11x</th><td>7875</td><td>28471</td><td>36346</td><td>36346</td><th>4.68x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CategoryDto 1 times</h3>
<table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr><th class='c1'>Microsoft DataContractSerializer</th><td>400652</td><th>4.64x</th><td>21895</td><td>62662</td><td>84557</td><td>84557</td><th>5.80x</th></tr><tr><th class='c1'>Microsoft JsonDataContractSerializer</th><td>302174</td><th>3.50x</th><td>40697</td><td>144114</td><td>184811</td><td>184811</td><th>12.68x</th></tr><tr><th class='c1'>Microsoft JavaScriptSerializer</th><td>290143</td><th>3.36x</th><td>169462</td><td>3811931</td><td>3981393</td><td>3981393</td><th>273.20x</th></tr><tr><th class='c1'>Microsoft BinaryFormatter</th><td>86323</td><th>1x</th><td>57210</td><td>21530</td><td>78740</td><td>78740</td><th>5.40x</th></tr><tr><th class='c1'>NewtonSoft.Json</th><td>302158</td><th>3.50x</th><td>36786</td><td>98596</td><td>135382</td><td>135382</td><th>9.29x</th></tr><tr><th class='c1'>ProtoBuf.net</th><td>90569</td><th>1.05x</th><td>6684</td><td>7889</td><td>14573</td><td>14573</td><th>1x</th></tr><tr><th class='c1'>ServiceStack TypeSerializer</th><td>212942</td><th>2.47x</th><td>20129</td><td>17202</td><td>37331</td><td>37331</td><th>2.56x</th></tr><tr><th class='c1'>Platform TextSerializer</th><td>252061</td><th>2.92x</th><td>13647</td><td>43526</td><td>57173</td><td>57173</td><th>3.92x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CategoryDto 1 times</h3>
<table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr><th class='c1'>Microsoft DataContractSerializer</th><td>25851</td><th>6.39x</th><td>1059</td><td>4259</td><td>5318</td><td>5318</td><th>15.15x</th></tr><tr><th class='c1'>Microsoft JsonDataContractSerializer</th><td>15365</td><th>3.80x</th><td>1349</td><td>7264</td><td>8613</td><td>8613</td><th>24.54x</th></tr><tr><th class='c1'>Microsoft JavaScriptSerializer</th><td>15410</td><th>3.81x</th><td>9242</td><td>21809</td><td>31051</td><td>31051</td><th>88.46x</th></tr><tr><th class='c1'>Microsoft BinaryFormatter</th><td>6819</td><th>1.69x</th><td>2302</td><td>1817</td><td>4119</td><td>4119</td><th>11.74x</th></tr><tr><th class='c1'>NewtonSoft.Json</th><td>15449</td><th>3.82x</th><td>1756</td><td>6299</td><td>8055</td><td>8055</td><th>22.95x</th></tr><tr><th class='c1'>ProtoBuf.net</th><td>4044</td><th>1x</th><td>351</td><td>0</td><td>351</td><td>351</td><th>1x</th></tr><tr><th class='c1'>ServiceStack TypeSerializer</th><td>13517</td><th>3.34x</th><td>831</td><td>1153</td><td>1984</td><td>1984</td><th>5.65x</th></tr><tr><th class='c1'>Platform TextSerializer</th><td>11103</td><th>2.75x</th><td>577</td><td>1794</td><td>2371</td><td>2371</td><th>6.75x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CategoryDto 1 times</h3>
<table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr><th class='c1'>Microsoft DataContractSerializer</th><td>485</td><th>8.98x</th><td>86</td><td>146</td><td>232</td><td>232</td><th>3.01x</th></tr><tr><th class='c1'>Microsoft JsonDataContractSerializer</th><td>159</td><th>2.94x</th><td>103</td><td>191</td><td>294</td><td>294</td><th>3.82x</th></tr><tr><th class='c1'>Microsoft JavaScriptSerializer</th><td>159</td><th>2.94x</th><td>216</td><td>390</td><td>606</td><td>606</td><th>7.87x</th></tr><tr><th class='c1'>Microsoft BinaryFormatter</th><td>628</td><th>11.63x</th><td>227</td><td>182</td><td>409</td><td>409</td><th>5.31x</th></tr><tr><th class='c1'>NewtonSoft.Json</th><td>159</td><th>2.94x</th><td>101</td><td>178</td><td>279</td><td>279</td><th>3.62x</th></tr><tr><th class='c1'>ProtoBuf.net</th><td>54</td><th>1x</th><td>77</td><td>0</td><td>77</td><td>77</td><th>1x</th></tr><tr><th class='c1'>ServiceStack TypeSerializer</th><td>135</td><th>2.5x</th><td>65</td><td>52</td><td>117</td><td>117</td><th>1.52x</th></tr><tr><th class='c1'>Platform TextSerializer</th><td>143</td><th>2.65x</th><td>51</td><td>94</td><td>145</td><td>145</td><th>1.88x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CategoryDto 1 times</h3>
<table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr><th class='c1'>Microsoft DataContractSerializer</th><td>486</td><th>4.42x</th><td>90</td><td>162</td><td>252</td><td>252</td><th>1.81x</th></tr><tr><th class='c1'>Microsoft JsonDataContractSerializer</th><td>198</td><th>1.8x</th><td>102</td><td>226</td><td>328</td><td>328</td><th>2.36x</th></tr><tr><th class='c1'>Microsoft JavaScriptSerializer</th><td>198</td><th>1.8x</th><td>238</td><td>654</td><td>892</td><td>892</td><th>6.42x</th></tr><tr><th class='c1'>Microsoft BinaryFormatter</th><td>700</td><th>6.36x</th><td>231</td><td>215</td><td>446</td><td>446</td><th>3.21x</th></tr><tr><th class='c1'>NewtonSoft.Json</th><td>198</td><th>1.8x</th><td>122</td><td>185</td><td>307</td><td>307</td><th>2.21x</th></tr><tr><th class='c1'>ProtoBuf.net</th><td>110</td><th>1x</th><td>55</td><td>84</td><td>139</td><td>139</td><th>1x</th></tr><tr><th class='c1'>ServiceStack TypeSerializer</th><td>168</td><th>1.53x</th><td>76</td><td>64</td><td>140</td><td>140</td><th>1.01x</th></tr><tr><th class='c1'>Platform TextSerializer</th><td>180</td><th>1.64x</th><td>57</td><td>112</td><td>169</td><td>169</td><th>1.22x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CategoryDto 1 times</h3>
<table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr><th class='c1'>Microsoft DataContractSerializer</th><td>11521</td><th>2.79x</th><td>533</td><td>1888</td><td>2421</td><td>2421</td><th>4.01x</th></tr><tr><th class='c1'>Microsoft JsonDataContractSerializer</th><td>8253</td><th>2.00x</th><td>663</td><td>3019</td><td>3682</td><td>3682</td><th>6.10x</th></tr><tr><th class='c1'>Microsoft JavaScriptSerializer</th><td>8288</td><th>2.00x</th><td>3738</td><td>7318</td><td>11056</td><td>11056</td><th>18.30x</th></tr><tr><th class='c1'>Microsoft BinaryFormatter</th><td>6032</td><th>1.46x</th><td>1211</td><td>980</td><td>2191</td><td>2191</td><th>3.63x</th></tr><tr><th class='c1'>NewtonSoft.Json</th><td>8238</td><th>1.99x</th><td>752</td><td>1603</td><td>2355</td><td>2355</td><th>3.90x</th></tr><tr><th class='c1'>ProtoBuf.net</th><td>4135</td><th>1x</th><td>286</td><td>318</td><td>604</td><td>604</td><th>1x</th></tr><tr><th class='c1'>ServiceStack TypeSerializer</th><td>6322</td><th>1.53x</th><td>366</td><td>430</td><td>796</td><td>796</td><th>1.32x</th></tr><tr><th class='c1'>Platform TextSerializer</th><td>6822</td><th>1.65x</th><td>369</td><td>860</td><td>1229</td><td>1229</td><th>2.03x</th></tr>
</tbody>
</table>
<h3>Results of serializing and deserializing CategoryDto 1 times</h3>
<table>
<caption>* All times measured in ticks and payload size in bytes</caption><thead><tr><th>Serializer</th><th>Payload size</th><th>Larger than best</th><th>Serialization</th><th>Deserialization</th><th>Total</th><th>Avg per iteration</th><th>Slower than best</th></tr></thead>
<tbody>
<tr><th class='c1'>Microsoft DataContractSerializer</th><td>6459</td><th>5.64x</th><td>320</td><td>964</td><td>1284</td><td>1284</td><th>4.05x</th></tr><tr><th class='c1'>Microsoft JsonDataContractSerializer</th><td>3319</td><th>2.90x</th><td>376</td><td>1534</td><td>1910</td><td>1910</td><th>6.03x</th></tr><tr><th class='c1'>Microsoft JavaScriptSerializer</th><td>3319</td><th>2.90x</th><td>2491</td><td>3635</td><td>6126</td><td>6126</td><th>19.32x</th></tr><tr><th class='c1'>Microsoft BinaryFormatter</th><td>2846</td><th>2.49x</th><td>896</td><td>726</td><td>1622</td><td>1622</td><th>5.12x</th></tr><tr><th class='c1'>NewtonSoft.Json</th><td>3319</td><th>2.90x</th><td>496</td><td>1065</td><td>1561</td><td>1561</td><th>4.92x</th></tr><tr><th class='c1'>ProtoBuf.net</th><td>1145</td><th>1x</th><td>140</td><td>177</td><td>317</td><td>317</td><th>1x</th></tr><tr><th class='c1'>ServiceStack TypeSerializer</th><td>2789</td><th>2.44x</th><td>199</td><td>339</td><td>538</td><td>538</td><th>1.70x</th></tr><tr><th class='c1'>Platform TextSerializer</th><td>3001</td><th>2.62x</th><td>226</td><td>514</td><td>740</td><td>740</td><th>2.33x</th></tr>
</tbody>
</table>
</body>
</html>

